package com.ruoyi.core.service.impl;

import java.util.Arrays;
import java.util.List;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.core.domain.store.StoreBusinessTime;
import com.ruoyi.core.domain.store.StoreDetail;
import com.ruoyi.core.dto.store.StoreFullInfoDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.core.mapper.StoreInfoMapper;
import com.ruoyi.core.domain.store.StoreInfo;
import com.ruoyi.core.service.IStoreInfoService;

/**
 * 商户基本信息Service业务层处理
 * 
 * @author Sxz
 * @date 2025-08-07
 */
@Service
public class StoreInfoServiceImpl implements IStoreInfoService 
{
    @Autowired
    private StoreInfoMapper storeInfoMapper;

    @Override
    public StoreFullInfoDTO getFullStoreInfoByStoreId(Long storeId) {
        // 先查门店信息，拿营业模式
        StoreInfo storeInfo = storeInfoMapper.selectStoreInfoById(storeId);
        if (storeInfo == null) {
            return null; // 或抛异常
        }
        Long businessPattern = storeInfo.getBusinessPattern();

        // 调用已有方法，传两个参数
        return this.getFullStoreInfo(storeId, businessPattern);
    }

    @Override
    public StoreFullInfoDTO getFullStoreInfo(Long storeId, Long businessPattern) {
        StoreInfo storeInfo = storeInfoMapper.selectStoreInfoById(storeId);
        StoreDetail storeDetail = storeInfoMapper.selectStoreDetailByStoreId(storeId);
        List<StoreBusinessTime> businessTimes = storeInfoMapper.selectBusinessTimesByStoreIdAndPattern(storeId, businessPattern);

        StoreFullInfoDTO dto = new StoreFullInfoDTO();
        dto.setStoreInfo(storeInfo);
        dto.setStoreDetail(storeDetail);
        dto.setBusinessTimes(businessTimes);
        return dto;
    }

    /**
     * 查询商户基本信息
     * 
     * @param id 商户基本信息主键
     * @return 商户基本信息
     */
    @Override
    public StoreInfo selectStoreInfoById(Long id)
    {
        return storeInfoMapper.selectStoreInfoById(id);
    }

    /**
     * 查询商户基本信息列表
     * 
     * @param storeInfo 商户基本信息
     * @return 商户基本信息
     */
    @Override
    public List<StoreInfo> selectStoreInfoList(StoreInfo storeInfo)
    {
        return storeInfoMapper.selectStoreInfoList(storeInfo);
    }

    /**
     * 新增商户基本信息
     * 
     * @param storeInfo 商户基本信息
     * @return 结果
     */
    @Override
    public int insertStoreInfo(StoreInfo storeInfo)
    {
        storeInfo.setCreateTime(DateUtils.getNowDate());
        return storeInfoMapper.insertStoreInfo(storeInfo);
    }

    /**
     * 修改商户基本信息
     * 
     * @param storeInfo 商户基本信息
     * @return 结果
     */
    @Override
    public int updateStoreInfo(StoreInfo storeInfo)
    {
        storeInfo.setUpdateTime(DateUtils.getNowDate());
        return storeInfoMapper.updateStoreInfo(storeInfo);
    }

    /**
     * 批量删除商户基本信息
     * 
     * @param ids 需要删除的商户基本信息主键
     * @return 结果
     */
    @Override
    public int deleteStoreInfoByIds(Long[] ids)
    {
        return storeInfoMapper.deleteBatchIds(Arrays.asList(ids));
    }

    /**
     * 删除商户基本信息信息
     * 
     * @param id 商户基本信息主键
     * @return 结果
     */
    @Override
    public int deleteStoreInfoById(Long id)
    {
        return storeInfoMapper.deleteById(id);
    }
}
